package com.linkgie.galaxyframework.templating;

import java.io.File;

/**
 * 模板处理器；
 */
public interface TemplateProcessor {

    /**
     * 模板；
     * 
     * @return
     */
    Template getTemplate();

    /**
     * 根据基于指定的上下文生成制品，输出至指定的目录；
     * 
     * @param context         上下文；
     * @param outputDirectory 输出结果的根目录；
     * @return
     */
    Artifact generate(DataContext context, File outputDirectory);

    /**
     * 返回生成对象；
     * <p>
     * 
     * 如果 {@link #isDirectoryTemplate()} 为 true ，则返回对象表示一个目录名；
     * <p>
     * 如果 {@link #isFileTemplate()} 为 true ，则返回对象表示一个文件名；
     * <p>
     * 
     * <p>
     * 在未执行 {@link #generate(DataContext, File)} 方法之前，返回的文件对象指向的目标尚未创建；
     * 
     * @return
     */
    String generateTargetName(DataContext context);

}